//
//  UIImage+AsyncDraw.swift
//  大深圳微博01
//
//  Created by shenzhenIOS on 16/4/18.
//  Copyright © 2016年 shenzhenIOS. All rights reserved.
//

import UIKit

extension UIImage {
    
    /// 异步绘制图片
    func hm_AsyncDrawImage(var size: CGSize?, bkgColor: UIColor? = UIColor.whiteColor(), isCorner: Bool = false, drawFinish: (image: UIImage) -> ()) {
        dispatch_async(dispatch_get_global_queue(0, 0)) { () -> Void in
//            let start = CACurrentMediaTime()
            
            if size == nil {
                // 别人没有传入size,使用图片的大小
                size = self.size
            }
            
            // 上下文大小的rect
            let rect = CGRect(origin: CGPointZero, size: size!)
            
            // 开启上下文
            // size 大小
            // 不透明度: ture 表示不透明, false 表示透明
            UIGraphicsBeginImageContextWithOptions(size!, bkgColor != nil, UIScreen.mainScreen().scale)
            
            // 设置背景颜色
            bkgColor?.setFill()
            UIRectFill(rect)
            
            // 需要圆角
            if isCorner {
                // 路径
                let path = UIBezierPath(ovalInRect: rect)
                
                // 让后面绘制的元素在路径里面
                path.addClip()
            }
            
            self.drawInRect(rect)
            
            // 获取图片
            let newImage = UIGraphicsGetImageFromCurrentImageContext()
            
            // 结束上下文
            UIGraphicsEndImageContext()
            
//            let end = CACurrentMediaTime()
            
//            print("异步绘制时间: \(end - start)")
            
            /// 返回绘制好得图片
            dispatch_async(dispatch_get_main_queue(), { () -> Void in
                drawFinish(image: newImage)
            })
        }
    }
}
